package com.itheima.springboot_jpa.task;

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;

@Component
public class TaskWork {

    /**
     * cron：表达式是一个字符串，教案详细介绍，案例：cron = "1/2 * * * * *"
     * zone：时区接收一个java.util.TimeZone#ID，
     * cron表达式会基于该时区解析。默认是一个空字符串，即取服务器所在地的时区
     * <p>
     * 注意：以下参数设置的单位都是毫秒
     * fixedDelay：上一次执行完毕时间点之后多长时间再执行，案例:fixedDelay = 1000
     * fixedDelayString:与 fixedDelay 意思相同，只是使用字符串的形式。唯一不同的是支持占位符,
     * 点位符中内容可以来源属性文件，案例:fixedDelayString = "${task.work.delay}"
     * fixedRate：上一次开始执行时间点之后多长时间再执行，案例:fixedRate = 2000
     * fixedRateString：与fixedRate意思相同，类似上面的fixedDelayString
     * initialDelay：第一次延迟多长时间后再执行，案例:@Scheduled(initialDelay = 1000,fixedDelay=2000)
     * initialDelayString：与initialDelay意思相同，类似上面的fixedDelayString
     */

    @Scheduled(cron = "1/2 * * * * *")    //指定执行策略
    public void taskDoSomething() {
        System.out.println("定时任务执行了taskDoSomthing，当前时间:" + LocalDateTime.now());
    }
}

